System and method for continuing playback in widget after app is backgrounded

ABSTRACT

This disclosure generally relates to systems and methods that facilitate transitioning a current playback of a video in a video application to a video widget when the video application is moved to a background of a multitasking operating system in which the video application is executing. The transition occurs seamlessly at a point of the current playback in the video application when the video application is moved to the background. Furthermore, upon the video application being moved to the foreground of the multitasking operating system, current playback of the video in the video widget is seamlessly transitioned to the video application.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/619,038, filed Jun. 9, 2017, which is a continuation of U.S. patentapplication Ser. No. 14/206,838, filed Mar. 12, 2014, each of which ishereby incorporated by reference herein in its entirety.

TECHNICAL FIELD

This disclosure generally relates to systems and methods that facilitateseamlessly transitioning a current playback of a video in a videoapplication to a video widget when the video application is moved to abackground of a multitasking operating system in which the videoapplication is executing. The transition occurs seamlessly at a point ofthe current playback in the video application when the video applicationis moved to the background. Furthermore, upon the video applicationbeing moved to the foreground of the multitasking operating system,current playback of the video in the video widget is seamlesslytransitioned to the video application.

BACKGROUND

Mobile devices allow users to switch across varieties of applicationsinstalled on the device. However, when an application, such as a videoapplication, that is currently in the foreground of the operating systemof the mobile device (e.g., an application that the user has selectedfor current operation and/or interaction) is moved to the background ofthe operating system (e.g., an application that the user has navigatedaway from), the video application is stopped, paused, or closed. This isnot an ideal user experience, for example, when the user may want toemploy another application or check notifications, but let thebackgrounded video application continue to play the video.

SUMMARY

A simplified summary is provided herein to help enable a basic orgeneral understanding of various aspects of exemplary, non-limitingembodiments that follow in the more detailed description and theaccompanying drawings. This summary is not intended, however, as anextensive or exhaustive overview. Instead, the purpose of this summaryis to present some concepts related to some exemplary non-limitingembodiments in simplified form as a prelude to more detailed descriptionof the various embodiments that follow in the disclosure.

In accordance with a non-limiting implementation, a first input isdetected that moves a video application from a foreground to abackground of a multitasking operating system; and in response to thefirst input: a first current playback point of the video in the videoapplication is determined, playback of the video at the first currentplayback point is initiated in a widget application, and the videoapplication is moved to the background of the multitasking operatingsystem.

In accordance with a non-limiting implementation, an applicationtransfer component is configured to determine that a video applicationhas been moved from a foreground to a background of an operating systemof the device, determine a first current playback point of the video inthe video application, and start playback of the video at the firstcurrent playback point in a video widget.

In accordance with a non-limiting implementation, it is detected that avideo application has been moved from a foreground to a background of anoperating system of the device, a first current playback point of thevideo in the video application is identified, and playback of the videoat the first current playback point in a video widget is commenced.

These and other implementations and embodiments are described in moredetail below.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a block diagram of an exemplary non-limiting examplesystem for seamlessly transitioning a current playback of a video in avideo application to a video widget when the video application is movedto a background of a multitasking operating system in which the videoapplication is executing, and upon the video application being moved tothe foreground of the multitasking operating system, seamlesslytransitioning current playback of the video in the video widget to thevideo application in accordance with an implementation of thisdisclosure.

FIG. 2 illustrates a block diagram of an exemplary non-limiting videotransfer component that seamlessly transitioning a current playback of avideo between a video application and video widget in accordance with animplementation of this disclosure.

FIG. 3A illustrates a non-limiting example client device is illustratedin accordance with an implementation of this disclosure.

FIG. 3B illustrates a non-limiting example client device correspondingto FIG. 3A where a user has selected a video application icon inaccordance with an implementation of this disclosure.

FIG. 3C illustrates a non-limiting example client device correspondingto FIG. 3B where video application has been moved to the background andplayback of the video has been seamless transitioned to video widget atthe current playback time in video application in accordance with animplementation of this disclosure.

FIG. 3D illustrates a non-limiting example client device correspondingto FIG. 3C where video widget has continued playback of video inaccordance with an implementation of this disclosure.

FIG. 3E illustrates a non-limiting example client device correspondingto FIG. 3D where video application has been moved to the foreground andplayback of the video has been seamless transitioned to videoapplication at the current playback time in video widget in accordancewith an implementation of this disclosure.

FIG. 4 illustrates an exemplary non-limiting flow diagram for seamlesslytransitioning a current playback of a video in a video application to avideo widget when the video application is moved to a background of amultitasking operating system in which the video application isexecuting in accordance with an implementation of this disclosure.

FIG. 5 illustrates an exemplary non-limiting flow diagram for seamlesslytransitioning a current playback of a video in a video widget to a videoapplication when the video application is moved to a foreground of amultitasking operating system in which the video application isexecuting in accordance with an implementation of this disclosure.

FIG. 6 illustrates a block diagram of an exemplary non-limitingnetworked environment in which various embodiments can be implemented.

FIG. 7 illustrates a block diagram of an exemplary non-limitingcomputing system or operating environment in which various embodimentscan be implemented.

DETAILED DESCRIPTION

Various aspects or features of this disclosure are described withreference to the drawings, wherein like reference numerals are used torefer to like elements throughout. In this specification, numerousspecific details are set forth in order to provide a thoroughunderstanding of this disclosure. It should be understood, however, thatcertain aspects of this disclosure may be practiced without thesespecific details, or with other methods, components, materials, etc. Inother instances, well-known structures and devices are shown in blockdiagram form to facilitate describing this disclosure.

In accordance with various disclosed aspects, a mechanism is providedfor a client device (e.g., user device) to seamlessly transition (e.g.,transfer, handoff, shift, switch, or move) a current playback of a videoin a video application to a video widget (e.g., live widget, real-timewidget, live tile, widget application, or live icon) when the videoapplication is moved to a background of a multitasking operating systemin which the video application is executing. Upon the video applicationbeing moved to the foreground of the multitasking operating system, amechanism is provided to seamlessly transition current playback of thevideo in the video widget to the video application. It is to beappreciated that in a non-limiting example, a widget can be anapplication that comprises a subset of functionality of a correspondingfull application. For example, the video widget can comprise a subset ofthe functionality of the video application. In another example, thevideo widget can be a completely different type of application from thevideo application (e.g., different form, different publisher, differentcodecs supported, different functionality, or any other suitabledifferentiating characteristic)

While embodiments presented herein use videos being transitioned betweena video application and video widget for ease of explanation, it is tobe appreciated that concepts herein are applicable to any suitablecontent for which continued play can be transitioned back and forthbetween an application and a corresponding widget, non-limiting examplesof which can include, music, speeches, cartoons, short films, movies,televisions shows, games, applications, or any other suitable creativework.

Referring now to the drawings, FIG. 1 depicts a system 100 forseamlessly transitioning a current playback of a video in a videoapplication to a video widget when the video application is moved to abackground of a multitasking operating system in which the videoapplication is executing; and upon the video application being moved tothe foreground of the multitasking operating system, seamlesslytransitioning current playback of the video in the video widget to thevideo application. System 100 includes client device 110 that includesvideo transfer component 120 that seamlessly transitions a currentplayback of a video between a video application and video widget. Clientdevice 110 also includes interface component 130 that interacts withserver(s) 150 to facilitate exchange of data. Additionally, clientdevice 110 includes a data store 140 that can store content and datagenerated and/or received by client device 110, video transfer component120, and interface component 130. Data store 140 can be stored on anysuitable type of storage device, non-limiting examples of which areillustrated with reference to FIGS. 6 and 7.

Client device 110 and server 150 include at least one memory that storescomputer executable components and at least one processor that executesthe computer executable components stored in the memory, a non-limitingexample of which can be found with reference to FIG. 7. Client device110 can communicate via a wired and/or wireless network with server 150.Furthermore, Client device 110 can communicate with any suitable numberof servers 150, and server 150 can communicate with any suitable numberof client devices 110. It is further to be appreciated that server 150can be another client device 110.

Client device 110 and server 150 can be any suitable type of device forrecording, interacting with, receiving, accessing, or supplying datalocally, or remotely over a wired or wireless communication link,non-limiting examples of which include a wearable device or anon-wearable device. Wearable device can include, for example, heads-updisplay glasses, a monocle, eyeglasses, contact lens, sunglasses, aheadset, a visor, a cap, a helmet, a mask, a headband, clothing, camera,video camera, or any other suitable device capable of recording,interacting with, receiving, accessing, or supplying data that can beworn by a human or non-human user. Non-wearable device can include, forexample, a mobile device, a mobile phone, a camera, a camcorder, a videocamera, personal data assistant, laptop computer, tablet computer,desktop computer, server system, cable set top box, satellite set topbox, cable modem, television set, monitor, media extender device,Blu-ray device, DVD (digital versatile disc or digital video disc)device, compact disc device, video game system, portable video gameconsole, audio/video receiver, radio device, portable music player,navigation system, car stereo, sensor, or any other suitable devicecapable of recording, interacting with, receiving, accessing, orsupplying data. Moreover, Client device 110 and server 150 can include auser interface (e.g., a web browser or application), that can receiveand present displays and data generated locally or remotely.

FIG. 2 illustrates video transfer component 120 that includes anapplication transfer component 210 that seamlessly transitions a currentplayback of a video in a video application to a video widget when thevideo application is moved to a background of a multitasking operatingsystem in which the video application is executing. For example, aclient device can be executing a multitasking operating system thatallows a user to switch between tasks executing by the operating system.The user can be playing a video in a video application and receive anotification that an email has arrived. The user can select a homebutton on the client device that moves the video application to abackground of the operating system and presents a home screen, such thatthey can select an application icon for an email application or view anemail widget on the home screen. Upon the video application being movedto a background of the operating system, application transfer component210 can seamlessly transition playback of the video to a video widget onthe home screen at a current point in time of the playback in the videoapplication when the user selected the home screen. The playback of thevideo will begin in the video widget at the current point in playbacktime to allow for a seamless transition. It is to be appreciated thatapplication transfer component 210 can detect that video application hasbeen moved to a background of a multitasking operating system, beinformed by the multitasking operating system that video application hasbeen moved to the background, or user any other suitable mechanism todetermine that video application has been moved to the background of themultitasking operating system. It should be understood that the widgetcan also be executed by the multitasking operating system. Furthermore,the video can be locally stored on client device 110 or streamed fromserver 150.

Referring to FIG. 3A, a non-limiting example client device 110 isillustrated. Client device 110 includes a notification area 310 thatprovides notifications to the user using graphics or text. Client device110 includes a menu button 306 that upon selection displays a menu ofoptions that the user can select. Client device 110 also includes a homebutton 307 that upon selection brings the display to a home screen.Client device 110 includes a return (e.g., go back) button 308 that uponselection brings the display to a previous activity, application, ordisplay. Additionally, client device 110 can display a variety ofwidgets and application icons on a screen, such as in a non-limitingexample, home screen 311. In this non-limiting example, client device110 is depicted with a video widget 360, a weather widget 362, a phoneapplication icon 364, an email application icon 366, an exerciseapplication icon 368, a flight application icon 370, a diningapplication icon 373, a music application icon 374, a camera applicationicon 376, a clock widget 378, a browser application icon 380, a calendarapplication icon 382, a social networking application icon 384, and avideo application icon 386. It is to be appreciated that any suitablebuttons, notifications, applications, application icons, and/or widgetscan be displayed by client device 110 in any suitable format orlocation. Video widget 360 is depicted in this example where there is novideo playing in the widget. A user can interact with any button,notification, application, application icon, and/or widget displayed byclient device 110. For example, a user can select video application icon386 to bring the video application to the foreground of the multitaskingoperating system on client device 110.

Referring to FIG. 3B, client device 110 is illustrated corresponding toFIG. 3A where a user has selected video application icon 386. Videoapplication 312 corresponding to video application icon 386 is displayedby client device 110. Video application 312 includes a title area 315that indicates the application or website that is currently active or inthe foreground, which in this example is “VIDEOS”. Video application 312also includes a search area 320 that allows for entering a search queryfor content in the “VIDEOS”. Furthermore, video application 312 includesa user area 325 that indicates the current user signed into the videoapplication, which in this example is “USER 1”, and that also provides asign-out selection element 330 for the user to sign out of theapplication. In this example USER1 has selected a video “BARACK OBAMADNC SPEECH” 350 for playback and title 340 “BARACK OBAMA DNC SPEECH”,date 345 “Jul. 24, 2004”, and description 355 “The speech that presidentBarack Obama gave at the Democratic National Convention in 2004” aredisplayed. It is to be appreciated that any suitable details associatedwith the video can be presented. In this example, playback time area 352indicates that the current playback time of video 350 is at 00:03:54 outof 00:27:34 total time for video 350.

Video application 312 can be moved to the background of the multitaskingoperating system on client device 110 by user action or operating systemaction. For example, a user can select home button 307 to move videoapplication 312 to the background and display the home screen 311. Inanother example, a notification can pop-up informing the user of anemail that has arrived, and the user can select the notification to movevideo application 312 to the background and display an email application(not shown). In a further example, the multitasking operating system onclient device 110 can automatically move video application 312 to thebackground and display another screen or application, such as based uponsystem defined or user defined settings and/or preferences. It is to beappreciated that any suitable mechanism can be employed to move videoapplication 312 to the background or foreground of the multitaskingoperating system on client device 110.

Referring back to FIG. 2, upon video application 312 being moved to thebackground of the multitasking operating system on client device 110,application transfer component 210 can execute a seamless transition ofplayback of a video currently playing in video application 312 to videowidget 360. In a non-limiting example, video application 312 informsvideo widget 360 of the current playback time of the video in videoapplication 312. In another example, application transfer component 210monitors playback of video in video application 312 and informs videowidget 360 of the current playback time of the video in videoapplication 312. In an additional example, video widget 360 monitorscurrent playback time of the video in video application 312. In afurther example, video processing (e.g., decoding) occurring in aprocessing thread associated with playback of the video is maintainedand a separate process for rendering of a graphical display associatedwith the video processing is moved from the video application to thevideo widget. In this manner, communication of a current playback timeof the video in video application 312 to video widget 360 is notrequired. In an additional example, video application 312 and videowidget 360 can employ differing decoding or rendering processes orcodecs. Furthermore, video application 312 and video widget 360 canaccess different versions of video 350 for display. Video application312, application transfer component 210, or video widget 360 caninitiate video widget 360 to begin playback of the video at the currentplayback point from video application 312. It is to be appreciated thatany suitable mechanism for transitioning playback of the video at acurrent playback time of the video in video application 312 to videowidget 360 can be employed. Furthermore, transitioning of playback of avideo from a video application 312 to a video widget 360 or vice versacan be performed automatically based upon system defined or userspecified setting or preference, or based upon a response to a promptpresented to a user when video application 312 is move betweenforeground and background inquiring whether transition should occur.Moreover, application transfer component 210 can determine or infercontext of the user or client device to make decisions regardingallowing or blocking transitioning of playback of video 350 from videoapplication 312 to widget 360. For example, system or user specifiedsettings or preferences can specify that in response to notifications,emails, or phone calls of a particular priority level or higher willcause application transfer component 210 to block the transitioning aplayback of video 350 from video application 312 to widget 360 whenvideo application 312 is moved to the background. In another example,application transfer component 210 can determine that a user is at workand block the transitioning a playback of video 350 from videoapplication 312 to widget 360 when video application 312 is moved to thebackground. In a further example, application transfer component 210 candetermine user interest in video 350 by monitoring the user's eye gazeand upon video application 312 being automatically moved the backgrounddue to arrival of an email above an particular importance level, allowtransitioning of playback of video 350 from video application 312 towidget 360 if the user's interest meets a particular interest level orblock transitioning of playback of video 350 from video application 312to widget 360 if the user's interest does not meet a particular interestlevel. It is to be appreciated that any suitable context parameter orthreshold can be employed by application transfer component 210 indetermining whether to allow or block transitioning of playback of video350 from video application 312 to widget 360.

Referring to FIG. 3C, is depicted client device 110 corresponding toFIG. 3B where video application 312 has been moved to the background andplayback of the video 350 has been seamlessly transitioned to videowidget 360 at the current playback time of 00:03:54 in video application312. It is to be appreciated that video widget 360 can have controls forthe user to control playback of the video (not shown). Furthermore,while this example depicts video widget 360 as residing on the homescreen, video widget 360 can reside on any screen on client device 110.Moreover, in another video widget 360 does not reside on any screen onclient device 110, and can be displayed as needed, such as a floatingwidget (e.g., a widget that pop-ups as required or specified, and floatsabove other portions of the display, a floating widget is not shownherein). A user can interact with any button, notification, widget,application icon, or application on client device 110 while video widget360 plays video 350. It is also to be appreciated that video 350 canalso continue playback in video application 312 in sync with videowidget 360, or can be stopped in video application 312, for example,based upon system defined or user specified settings or preference.Furthermore, while examples herein disclose seamlessly transitioningplayback between video application and video widget at a currentplayback time, it is to be appreciated that in another example,transitioning can occur at a playback time prior to or after the currentplayback time, such by a system defined or user specified setting orpreference.

Referring back to FIG. 2, video transfer component 120 also includeswidget transfer component 220 that seamlessly transitions a currentplayback of a video in a video widget 360 to a video application 312when the video application is moved to a foreground of a multitaskingoperating system in which the video application is executing. Forexample, a user can select a video application icon 386 or employ anapplication manager (not shown) on the client device that moves thevideo application to a foreground of the operating system. Upon thevideo application 312 being moved to a foreground of the operatingsystem, widget transfer component 220 can seamlessly transition playbackof the video to the video application 312 at a current point in time ofthe playback in the video widget 360 when the video application moved tothe foreground. The playback of the video will begin in the videoapplication 312 at the current point in playback time to allow for aseamless transition. It is to be appreciated that widget transfercomponent 220 can detect that video application has been moved to aforeground of a multitasking operating system, be informed by themultitasking operating system that video application has been moved tothe foreground, or employ any other suitable mechanism to determine thatvideo application has been moved to the foreground of a multitaskingoperating system.

FIG. 3D depicts client device 110 corresponding to FIG. 3C where videowidget 360 has continued playback of video 350 to a current playbacktime of 00:04:26.

Referring back to FIG. 2, upon video application 312 being moved to theforeground of the multitasking operating system on client device 110,widget transfer component 220 execute a seamless transition of playbackof a video currently playing in video widget 360 to video application312. In a non-limiting example, video widget 360 informs videoapplication 312 of the current playback time of the video in videowidget 360. In another example, application transfer component 210monitors playback of video in video widget 360 and informs videoapplication 312 of the current playback time of the video in videowidget 360. In an additional example, video application 312 monitorscurrent playback time of the video in video widget 360. In a furtherexample, video processing (e.g., decoding) occurring in a processingthread associated with playback of the video is maintained, and aseparate process for rendering of a graphical display associated withthe video processing is moved from the video widget 360 to videoapplication 312. In this manner, communication of a current playbacktime of the video in video widget 360 to video application 312 is notrequired. Video application 312, application transfer component 210, orvideo widget 360 can initiate video application 312 to being playback ofthe video at the current playback point of the video from video widget360. It is to be appreciated that any suitable mechanism fortransitioning playback of the video at a current playback time of thevideo in video widget 360 to video application 312 can be employed. Itis also to be appreciated that video 350 can also continue playback invideo widget 360 in sync with video application 312, or can be stoppedin video widget 360, for example, based upon system defined or userspecified settings or preference.

Referring to FIG. 3E, client device 110 is illustrated corresponding toFIG. 3D, where a user has selected video application icon 386. As such,video application 312 corresponding to video application icon 386 ismoved to the foreground of the multitasking operating system anddisplayed by client device 110. Widget transfer component 220 executes aseamless transition of playback of video 350 from the current playbacktime of 00:04:26 from video widget 360 to video application 312.

It is to be appreciated that while the example herein discloses a videowidget 360 playing a video that was transitioned from a videoapplication 312 and then transitioned back to the video application 312,a user can initiate playback of a video in video widget 360 and upon avideo application 312 being initiated or moved to the foreground, acurrent playback of the video in video widget 360 can be transitionedfrom video widget 360 to video application 312.

FIGS. 4 and 5 illustrate various methods in accordance with certaindisclosed aspects. While, for purposes of simplicity of explanation, themethodologies are shown and described as a series of acts, it is to beunderstood and appreciated that the disclosed aspects are not limited bythe order of acts, as some acts may occur in different orders and/orconcurrently with other acts from that shown and described herein. Forexample, those skilled in the art will understand and appreciate that amethodology can alternatively be represented as a series of interrelatedstates or events, such as in a state diagram. Moreover, not allillustrated acts may be required to implement a methodology inaccordance with certain disclosed aspects. Additionally, it is to befurther appreciated that the methodologies disclosed hereinafter andthroughout this disclosure are capable of being stored on an article ofmanufacture to facilitate transporting and transferring suchmethodologies to computers.

FIG. 4 depicts an exemplary method 400 (e.g., by an application transfercomponent 210, a video transfer component 120, or client device 110) forseamlessly transitioning a current playback of a video in a videoapplication to a video widget when the video application is moved to abackground of a multitasking operating system in which the videoapplication is executing. At reference numeral 410, it is determinedthat a video application currently playing a video has been moved from aforeground to a background of an operating system. At reference numeral420, playback of the video is seamlessly transitioned from the videoapplication to a video widget at a current playback time from the videoapplication. At reference numeral 430, the video widget playing thevideo is displayed. At reference numeral 440, optionally playback of thevideo is stopped in the video application.

FIG. 5 depicts an exemplary method 500 (e.g., by a widget transfercomponent 220, video transfer component 120, or client device 110) forseamlessly transitioning a current playback of a video in a video widgetto a video application when the video application is moved to aforeground of a multitasking operating system in which the videoapplication is executing. At reference numeral 510, playback of a videois initiated in a video widget. At reference numeral 520, it isdetermined that a video application has been initiated or moved from abackground to a foreground of an operating system. At reference numeral530, playback of the video is seamlessly transitioned from the videowidget to the video application at a current playback time from thevideo widget. At reference numeral 540, the video application playingthe video is displayed. At reference numeral 550, optionally playback ofthe video is stopped in the video widget.

Exemplary Networked and Distributed Environments

One of ordinary skill in the art can appreciate that the variousembodiments described herein can be implemented in connection with anycomputer or other client or server device, which can be deployed as partof a computer network or in a distributed computing environment, and canbe connected to any kind of data store where media may be found. In thisregard, the various embodiments described herein can be implemented inany computer system or environment having any number of memory orstorage units, and any number of applications and processes occurringacross any number of storage units. This includes, but is not limitedto, an environment with server computers and client computers deployedin a network environment or a distributed computing environment, havingremote or local storage.

Distributed computing provides sharing of computer resources andservices by communicative exchange among computing devices and systems.These resources and services include the exchange of information, cachestorage and disk storage for objects, such as files. These resources andservices can also include the sharing of processing power acrossmultiple processing units for load balancing, expansion of resources,specialization of processing, and the like. Distributed computing takesadvantage of network connectivity, allowing clients to leverage theircollective power to benefit the entire enterprise. In this regard, avariety of devices may have applications, objects or resources that mayparticipate in the various embodiments of this disclosure.

FIG. 6 provides a schematic diagram of an exemplary networked ordistributed computing environment. The distributed computing environmentcomprises computing objects 610, 612, etc. and computing objects ordevices 618, 620, 622, 624, 626, 628, etc., which may include programs,methods, data stores, programmable logic, etc., as represented byapplications 630, 632, 634, 636, 638. It can be appreciated thatcomputing objects 610, 612, etc. and computing objects or devices 618,620, 622, 624, 626, 628, etc. may comprise different devices, such aspersonal digital assistants (PDAs), audio/video devices, mobile phones,MP3 players, personal computers, laptops, tablets, etc.

Each computing object 610, 612, etc. and computing objects or devices618, 620, 622, 624, 626, 628, etc. can communicate with one or moreother computing objects 610, 612, etc. and computing objects or devices618, 620, 622, 624, 626, 628, etc. by way of the communications network640, either directly or indirectly. Even though illustrated as a singleelement in FIG. 6, network 640 may comprise other computing objects andcomputing devices that provide services to the system of FIG. 6, and/ormay represent multiple interconnected networks, which are not shown.Each computing object 610, 612, etc. or computing objects or devices618, 620, 622, 624, 626, 628, etc. can also contain an application, suchas applications 630, 632, 634, 636, 638, that might make use of an API,or other object, software, firmware and/or hardware, suitable forcommunication with or implementation of various embodiments of thisdisclosure.

There are a variety of systems, components, and network configurationsthat support distributed computing environments. For example, computingsystems can be connected together by wired or wireless systems, by localnetworks or widely distributed networks. Currently, many networks arecoupled to the Internet, which provides an infrastructure for widelydistributed computing and encompasses many different networks, thoughany suitable network infrastructure can be used for exemplarycommunications made incident to the systems as described in variousembodiments herein.

Thus, a host of network topologies and network infrastructures, such asclient/server, peer-to-peer, or hybrid architectures, can be utilized.The “client” is a member of a class or group that uses the services ofanother class or group. A client can be a computer process, e.g.,roughly a set of instructions or tasks, that requests a service providedby another program or process. A client process may utilize therequested service without having to “know” all working details about theother program or the service itself.

In a client/server architecture, particularly a networked system, aclient can be a computer that accesses shared network resources providedby another computer, e.g., a server. In the illustration of FIG. 6, as anon-limiting example, computing objects or devices 618, 620, 622, 624,626, 628, etc. can be thought of as clients and computing objects 610,612, etc. can be thought of as servers where computing objects 610, 612,etc. provide data services, such as receiving data from client computingobjects or devices 618, 620, 622, 624, 626, 628, etc., storing of data,processing of data, transmitting data to client computing objects ordevices 618, 620, 622, 624, 626, 628, etc., although any computer can beconsidered a client, a server, or both, depending on the circumstances.Any of these computing devices may be processing data, or requestingtransaction services or tasks that may implicate the techniques forsystems as described herein for one or more embodiments.

A server is typically a remote computer system accessible over a remoteor local network, such as the Internet or wireless networkinfrastructures. The client process may be active in a first computersystem, and the server process may be active in a second computersystem, communicating with one another over a communications medium,thus providing distributed functionality and allowing multiple clientsto take advantage of the information-gathering capabilities of theserver. Any software objects utilized pursuant to the techniquesdescribed herein can be provided standalone, or distributed acrossmultiple computing devices or objects.

In a network environment in which the communications network/bus 640 isthe Internet, for example, the computing objects 610, 612, etc. can beWeb servers, file servers, media servers, etc. with which the clientcomputing objects or devices 618, 620, 622, 624, 626, 628, etc.communicate via any of a number of known protocols, such as thehypertext transfer protocol (HTTP). Objects 610, 612, etc. may alsoserve as client computing objects or devices 618, 620, 622, 624, 626,628, etc., as may be characteristic of a distributed computingenvironment.

Exemplary Computing Device

As mentioned, advantageously, the techniques described herein can beapplied to any suitable device. It is to be understood, therefore, thathandheld, portable and other computing devices and computing objects ofall kinds are contemplated for use in connection with the variousembodiments. Accordingly, the computer described below in FIG. 7 is butone example of a computing device that can be employed with implementingone or more of the systems or methods shown and described in connectionwith FIGS. 1-5. Additionally, a suitable server can include one or moreaspects of the below computer, such as a media server or other mediamanagement server components.

Although not required, embodiments can partly be implemented via anoperating system, for use by a developer of services for a device orobject, and/or included within application software that operates toperform one or more functional aspects of the various embodimentsdescribed herein. Software may be described in the general context ofcomputer executable instructions, such as program modules, beingexecuted by one or more computers, such as client workstations, serversor other devices. Those skilled in the art will appreciate that computersystems have a variety of configurations and protocols that can be usedto communicate data, and thus, no particular configuration or protocolis to be considered limiting.

FIG. 7 thus illustrates an example of a suitable computing systemenvironment 700 in which one or aspects of the embodiments describedherein can be implemented, although as made clear above, the computingsystem environment 700 is only one example of a suitable computingenvironment and is not intended to suggest any limitation as to scope ofuse or functionality. Neither is the computing environment 700 beinterpreted as having any dependency or requirement relating to any oneor combination of components illustrated in the exemplary operatingenvironment 700.

With reference to FIG. 7, an exemplary computing device for implementingone or more embodiments in the form of a computer 710 is depicted.Components of computer 710 may include, but are not limited to, aprocessing unit 720, a system memory 730, and a system bus 722 thatcouples various system components including the system memory to theprocessing unit 720.

Computer 710 typically includes a variety of computer readable media andcan be any available media that can be accessed by computer 710. Thesystem memory 730 may include computer storage media in the form ofvolatile and/or nonvolatile memory such as read only memory (ROM) and/orrandom access memory (RAM). By way of example, and not limitation,system memory 730 may also include an operating system, applicationprograms, other program modules, and program data.

A user can enter commands and information into the computer 710 throughinput devices 740, non-limiting examples of which can include akeyboard, keypad, a pointing device, a mouse, stylus, touchpad,touchscreen, trackball, motion detector, camera, microphone, joystick,game pad, scanner, or any other device that allows the user to interactwith computer 710. A monitor or other type of display device is alsoconnected to the system bus 722 via an interface, such as outputinterface 750. In addition to a monitor, computers can also includeother peripheral output devices such as speakers and a printer, whichmay be connected through output interface 750.

The computer 710 may operate in a networked or distributed environmentusing logical connections to one or more other remote computers, such asremote computer 770 via network interface 760. The remote computer 770may be a personal computer, a server, a router, a network PC, a peerdevice or other common network node, or any other remote mediaconsumption or transmission device, and may include any or all of theelements described above relative to the computer 710. The logicalconnections depicted in FIG. 7 include a network 772, such local areanetwork (LAN) or a wide area network (WAN), but may also include othernetworks/buses e.g., cellular networks.

As mentioned above, while exemplary embodiments have been described inconnection with various computing devices and network architectures, theunderlying concepts may be applied to any network system and anycomputing device or system in which it is desirable to publish orconsume media in a flexible way.

Also, there are multiple ways to implement the same or similarfunctionality, e.g., an appropriate API, tool kit, driver code,operating system, control, standalone or downloadable software object,etc. which enables applications and services to take advantage of thetechniques described herein. Thus, embodiments herein are contemplatedfrom the standpoint of an API (or other software object), as well asfrom a software or hardware object that implements one or more aspectsdescribed herein. Thus, various embodiments described herein can haveaspects that are wholly in hardware, partly in hardware and partly insoftware, as well as in software.

The word “exemplary” is used herein to mean serving as an example,instance, or illustration. For the avoidance of doubt, the aspectsdisclosed herein are not limited by such examples. In addition, anyaspect or design described herein as “exemplary” is not necessarily tobe construed as preferred or advantageous over other aspects or designs,nor is it meant to preclude equivalent exemplary structures andtechniques known to those of ordinary skill in the art. Furthermore, tothe extent that the terms “includes,” “has,” “contains,” and othersimilar words are used in either the detailed description or the claims,for the avoidance of doubt, such terms are intended to be inclusive in amanner similar to the term “comprising” as an open transition wordwithout precluding any additional or other elements.

Computing devices typically include a variety of media, which caninclude computer-readable storage media and/or communications media, inwhich these two terms are used herein differently from one another asfollows. Computer-readable storage media can be any available storagemedia that can be accessed by the computer, is typically of anon-transitory nature, and can include both volatile and nonvolatilemedia, removable and non-removable media. By way of example, and notlimitation, computer-readable storage media can be implemented inconnection with any method or technology for storage of information suchas computer-readable instructions, program modules, structured data, orunstructured data. Computer-readable storage media can include, but arenot limited to, RAM, ROM, EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disk (DVD) or other optical diskstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or other tangible and/or non-transitorymedia which can be used to store desired information. Computer-readablestorage media can be accessed by one or more local or remote computingdevices, e.g., via access requests, queries or other data retrievalprotocols, for a variety of operations with respect to the informationstored by the medium.

On the other hand, communications media typically embodycomputer-readable instructions, data structures, program modules orother structured or unstructured data in a data signal such as amodulated data signal, e.g., a carrier wave or other transportmechanism, and includes any information delivery or transport media. Theterm “modulated data signal” or signals refers to a signal that has oneor more of its characteristics set or changed in such a manner as toencode information in one or more signals. By way of example, and notlimitation, communication media include wired media, such as a wirednetwork or direct-wired connection, and wireless media such as acoustic,RF, infrared and other wireless media.

As mentioned, the various techniques described herein may be implementedin connection with hardware or software or, where appropriate, with acombination of both. As used herein, the terms “component,” “system” andthe like are likewise intended to refer to a computer-related entity,either hardware, a combination of hardware and software, software, orsoftware in execution. For example, a component may be, but is notlimited to being, a process running on a processor, a processor, anobject, an executable, a thread of execution, a program, and/or acomputer. By way of illustration, both an application running oncomputer and the computer can be a component. One or more components mayreside within a process and/or thread of execution and a component maybe localized on one computer and/or distributed between two or morecomputers. Further, a “device” can come in the form of speciallydesigned hardware; generalized hardware made specialized by theexecution of software thereon that enables the hardware to performspecific function (e.g., coding and/or decoding); software stored on acomputer readable medium; or a combination thereof.

The aforementioned systems have been described with respect tointeraction between several components. It can be appreciated that suchsystems and components can include those components or specifiedsub-components, some of the specified components or sub-components,and/or additional components, and according to various permutations andcombinations of the foregoing. Sub-components can also be implemented ascomponents communicatively coupled to other components rather thanincluded within parent components (hierarchical). Additionally, it is tobe noted that one or more components may be combined into a singlecomponent providing aggregate functionality or divided into severalseparate sub-components, and that any one or more middle layers, such asa management layer, may be provided to communicatively couple to suchsub-components in order to provide integrated functionality. Anycomponents described herein may also interact with one or more othercomponents not specifically described herein but generally known bythose of skill in the art.

In order to provide for or aid in the numerous inferences describedherein (e.g. inferring relationships between metadata or inferringtopics of interest to users), components described herein can examinethe entirety or a subset of the data to which it is granted access andcan provide for reasoning about or infer states of the system,environment, etc. from a set of observations as captured via eventsand/or data. Inference can be employed to identify a specific context oraction, or can generate a probability distribution over states, forexample. The inference can be probabilistic—that is, the computation ofa probability distribution over states of interest based on aconsideration of data and events. Inference can also refer to techniquesemployed for composing higher-level events from a set of events and/ordata.

Such inference can result in the construction of new events or actionsfrom a set of observed events and/or stored event data, whether or notthe events are correlated in close temporal proximity, and whether theevents and data come from one or several event and data sources. Variousclassification (explicitly and/or implicitly trained) schemes and/orsystems (e.g., support vector machines, neural networks, expert systems,Bayesian belief networks, fuzzy logic, data fusion engines, etc.) can beemployed in connection with performing automatic and/or inferred actionin connection with the claimed subject matter.

A classifier can map an input attribute vector, z=(z1, z2, z3, z4, zn),to a] confidence that the input belongs to a class, as byf(z)=confidence(class). Such classification can employ a probabilisticand/or statistical-based analysis (e.g., factoring into the analysisutilities and costs) to prognose or infer an action that a user desiresto be automatically performed. A support vector machine (SVM) is anexample of a classifier that can be employed. The SVM operates byfinding a hyper-surface in the space of possible inputs, where thehyper-surface attempts to split the triggering criteria from thenon-triggering events. Intuitively, this makes the classificationcorrect for testing data that is near, but not identical to trainingdata. Other directed and undirected model classification approachesinclude, e.g., naïve Bayes, Bayesian networks, decision trees, neuralnetworks, fuzzy logic models, and probabilistic classification modelsproviding different patterns of independence can be employed.Classification as used herein also is inclusive of statisticalregression that is utilized to develop models of priority.

In view of the exemplary systems described above, methodologies that maybe implemented in accordance with the described subject matter will bebetter appreciated with reference to the flowcharts of the variousfigures. While for purposes of simplicity of explanation, themethodologies are shown and described as a series of blocks, it is to beunderstood and appreciated that the claimed subject matter is notlimited by the order of the blocks, as some blocks may occur indifferent orders and/or concurrently with other blocks from what isdepicted and described herein. Where non-sequential, or branched, flowis illustrated via flowchart, it can be appreciated that various otherbranches, flow paths, and orders of the blocks, may be implemented whichachieve the same or a similar result. Moreover, not all illustratedblocks may be required to implement the methodologies describedhereinafter.

In addition to the various embodiments described herein, it is to beunderstood that other similar embodiments can be used or modificationsand additions can be made to the described embodiment(s) for performingthe same or equivalent function of the corresponding embodiment(s)without deviating there from. Still further, multiple processing chipsor multiple devices can share the performance of one or more functionsdescribed herein, and similarly, storage can be effected across aplurality of devices. Accordingly, the invention is not to be limited toany single embodiment, but rather can be construed in breadth, spiritand scope in accordance with the appended claims.

What is claimed is:
 1. A method for transitioning content, the methodcomprising: causing, by a device including a hardware processor, a mediacontent item to be played back in an application that is in a foregroundstate on the device; detecting that the application presenting the mediacontent item has moved from the foreground state to a background stateon the device; and in response to the detection, causing a widgetapplication to be presented on an interface of the device, wherein themedia content item continues to be played back within the widgetapplication.
 2. The method of claim 1, wherein the widget application ispersistent on a display of the device.
 3. The method of claim 1, whereinthe widget application is a floating widget and wherein the continuedplayback of the media content item within the widget applicationcomprises activating the floating widget.
 4. The method of claim 1,wherein the application is moved to the background state by stoppingplayback of the media content item at a playback position in theapplication.
 5. The method of claim 1, further comprising determining aplayback position of the media content item in the application inresponse to detecting that the application presenting the media contentitem has moved from the foreground state to the background state on thedevice.
 6. The method of claim 5, wherein the media content itemcontinues to be played back within the widget application at thedetermined playback position of the media content item.
 7. The method ofclaim 5, wherein the playback position of the media content item in theapplication is determined by receiving data from the applicationindicating the playback position.
 8. The method of claim 5, wherein theplayback position of the media content item in the application isdetermined by tracking current playback of the media content item in theapplication.
 9. The method of claim 5, further comprising: receiving asecond input that moves the application into a foreground of amultitasking operating system; and in response to the second input:determining a second playback position of the media content item in thewidget application based on playback data received from the widgetapplication; moving the application to the foreground of themultitasking operating system; causing the media content item tocontinue being played back at the second playback position in theapplication; and causing the playback of the media content item in thewidget application to cease.
 10. The method of claim 9, whereininitiating playback of the media content item at the second playbackposition comprises: presenting an element inquiring whether to continueplayback of the media content item in the application; in response toreceiving third input indicating to continue playback of the mediacontent item, continuing playback of the media content item at thesecond playback position in the application; and in response toreceiving third input indicating not to continue playback of the mediacontent item, continuing playing back the media content item in thewidget application.
 11. A system for transitioning content, the systemcomprising: a memory; and a hardware processor that, when executingcomputer executable instructions stored in the memory, is configured to:cause a media content item to be played back in an application that isin a foreground state on a device; detect that the applicationpresenting the media content item has moved from the foreground state toa background state on the device; and in response to the detection,cause a widget application to be presented on an interface of thedevice, wherein the media content item continues to be played backwithin the widget application.
 12. The system of claim 11, wherein thewidget application is persistent on a display of the device.
 13. Thesystem of claim 11, wherein the widget application is a floating widgetand wherein the continued playback of the media content item within thewidget application comprises activating the floating widget.
 14. Thesystem of claim 11, wherein the application is moved to the backgroundstate by stopping playback of the media content item at a playbackposition in the application.
 15. The system of claim 11, wherein thehardware processor is further configured to determine a playbackposition of the media content item in the application in response todetecting that the application presenting the media content item hasmoved from the foreground state to the background state on the device.16. The system of claim 15, wherein the media content item continues tobe played back within the widget application at the determined playbackposition of the media content item.
 17. The system of claim 15, whereinthe playback position of the media content item in the application isdetermined by receiving data from the application indicating theplayback position.
 18. The system of claim 15, wherein the playbackposition of the media content item in the application is determined bytracking current playback of the media content item in the application.19. The system of claim 15, wherein the hardware processor is furtherconfigured to: receive a second input that moves the application into aforeground of a multitasking operating system; and in response to thesecond input: determine a second playback position of the media contentitem in the widget application based on playback data received from thewidget application; move the application to the foreground of themultitasking operating system; cause the media content item to continuebeing played back at the second playback position in the application;and cause the playback of the media content item in the widgetapplication to cease.
 20. The system of claim 19, wherein initiatingplayback of the media content item at the second playback positioncomprises: presenting an element inquiring whether to continue playbackof the media content item in the application; in response to receivingthird input indicating to continue playback of the media content item,continuing playback of the media content item at the second playbackposition in the application; and
 21. A non-transitory computer-readablemedium containing computer executable instructions that, when executedby a processor, cause the processor to perform a method fortransitioning content, the method comprising: causing a media contentitem to be played back in an application that is in a foreground stateon a device; detecting that the application presenting the media contentitem has moved from the foreground state to a background state on thedevice; and in response to the detection, causing a widget applicationto be presented on an interface of the device, wherein the media contentitem continues to be played back within the widget application.